home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Camelot / Camelot 043 (1989-06)(Swedish User Group of Amiga)(SE)(PD)[WB].zip / Camelot 043 (1989-06)(Swedish User Group of Amiga)(SE)(PD)[WB].adf / Glib / tx81z.c < prev    next >
C/C++ Source or Header  |  1989-03-16  |  8KB  |  237 lines

  1. /*
  2.  * GLIB - a Generic LIBrarian and editor for synths
  3.  *
  4.  * TX81Z routines for Patch parameters
  5.  */
  6.  
  7. #define OVERLAY1
  8.  
  9. #include "glib.h"
  10. #include <ctype.h>
  11.  
  12. char *visnum(), *visonoff(), *vism3num(), *viswave(), *vismono();
  13. char *visdx1a(), *vistxwave(), *vistxsft();
  14. char *vistxf1(), *vistxf2(), *vistxf3(), *vistxf4();
  15. char *visfx(), *visfix1(), *visfix2(), *visfix3(), *visfix4();
  16. extern int Dopmap[];
  17.  
  18. /* This array contains arbitrary screen labels */
  19. struct labelinfo Ltx81z[] = {
  20. 5,0," O       Dcy Lev Dcy               De  Out     Amp Eg  Key Key EG",
  21. 6,0," P   Atk  1   1   2  Rls Wav  Freq tun Lvl Vel Mod Bia Rat Scl Sft Fix/Ratio",
  22. 7,0," -   --- --- --- --- --- --- ----- --- --- --- --- --- --- --- --- ---------",
  23. 8,0," 1",
  24. 9,0," 2",
  25. 10,0," 3",
  26. 11,0," 4",
  27. 17,0,"-------------------------+",
  28. 18,0,"N = set name  q = quit   |",
  29. 19,0,"K = incr      J = decr   |",
  30. 20,0,"space = play auto-note   |",
  31. 21,0,"                         |",
  32. 22,0,"Auto-Note:               |",
  33. 23,0,"                         |",
  34. -1,-1,NULL
  35. };
  36.  
  37. /* This array defines all the editable parameters. */
  38. struct paraminfo Ptx81z[] = {
  39. "autopitch",    "Pitch",22, 11, 22, 17, visnum, 0, 127, 60, 0,
  40. "autovol",    "Vol",    23, 0, 23, 4, visnum, 0, 127, 63, 0,
  41. "autodur",    "Dur",    23, 8, 23, 12, visnum, 1, 20, 5, 0,
  42. "autochan",    "Chan",    23, 16, 23, 21, visnum, 1, 16, 1, 0,
  43.  
  44. "op1attack",    NULL, -1, -1, 8, 6, visnum, 0, 31, 0, 0,
  45. "op1decay1",    NULL, -1, -1, 8, 10, visnum, 0, 31, 0, 0,
  46. "op1level1",    NULL, -1, -1, 8, 14, visnum, 0, 15, 0, 0,
  47. "op1decay2",    NULL, -1, -1, 8, 18, visnum, 0, 31, 0, 0,
  48. "op1release",    NULL, -1, -1, 8, 22, visnum, 0, 31, 0, 0,
  49. "op1wave",    NULL, -1, -1, 8, 26, vistxwave, 0, 7, 0, 0,
  50. "op1freq",    NULL, -1, -1, 8, 30, vistxf1, 0, 878, 0, 0,
  51. "op1detune",    NULL, -1, -1, 8, 36, vism3num, 0, 6, 0, 0,
  52. "op1outlevel",    NULL, -1, -1, 8, 40, visnum, 0, 99, 0, 0,
  53. "op1velocity",    NULL, -1, -1, 8, 44, visnum, 0, 7, 0, 0,
  54. "op1ampmod",    NULL, -1, -1, 8, 47, visonoff, 0, 1, 0, 0,
  55. "op1egbias",    NULL, -1, -1, 8, 52, visnum, 0, 7, 0, 0,
  56. "op1keyrate",    NULL, -1, -1, 8, 56, visnum, 0, 3, 0, 0,
  57. "op1keyscale",    NULL, -1, -1, 8, 60, visnum, 0, 99, 0, 0,
  58. "op1egsft",    NULL, -1, -1, 8, 63, vistxsft, 0, 3, 0, 0,
  59. "op1fix",    NULL, -1, -1, 8, 69, visfix1, 0, 1, 0, 0,
  60. "op2attack",    NULL, -1, -1, 9, 6, visnum, 0, 31, 0, 0,
  61. "op2decay1",    NULL, -1, -1, 9, 10, visnum, 0, 31, 0, 0,
  62. "op2level1",    NULL, -1, -1, 9, 14, visnum, 0, 15, 0, 0,
  63. "op2decay2",    NULL, -1, -1, 9, 18, visnum, 0, 31, 0, 0,
  64. "op2release",    NULL, -1, -1, 9, 22, visnum, 0, 31, 0, 0,
  65. "op2wave",    NULL, -1, -1, 9, 26, vistxwave, 0, 7, 0, 0,
  66. "op2freq",    NULL, -1, -1, 9, 30, vistxf2, 0, 878, 0, 0,
  67. "op2detune",    NULL, -1, -1, 9, 36, vism3num, 0, 6, 0, 0,
  68. "op2outlevel",    NULL, -1, -1, 9, 40, visnum, 0, 99, 0, 0,
  69. "op2velocity",    NULL, -1, -1, 9, 44, visnum, 0, 7, 0, 0,
  70. "op2ampmod",    NULL, -1, -1, 9, 47, visonoff, 0, 1, 0, 0,
  71. "op2egbias",    NULL, -1, -1, 9, 52, visnum, 0, 7, 0, 0,
  72. "op2keyrate",    NULL, -1, -1, 9, 56, visnum, 0, 3, 0, 0,
  73. "op2keyscale",    NULL, -1, -1, 9, 60, visnum, 0, 99, 0, 0,
  74. "op2egsft",    NULL, -1, -1, 9, 63, vistxsft, 0, 3, 0, 0,
  75. "op2fix",    NULL, -1, -1, 9, 69, visfix2, 0, 1, 0, 0,
  76. "op3attack",    NULL, -1, -1, 10, 6, visnum, 0, 31, 0, 0,
  77. "op3decay1",    NULL, -1, -1, 10, 10, visnum, 0, 31, 0, 0,
  78. "op3level1",    NULL, -1, -1, 10, 14, visnum, 0, 15, 0, 0,
  79. "op3decay2",    NULL, -1, -1, 10, 18, visnum, 0, 31, 0, 0,
  80. "op3release",    NULL, -1, -1, 10, 22, visnum, 0, 31, 0, 0,
  81. "op3wave",    NULL, -1, -1, 10, 26, vistxwave, 0, 7, 0, 0,
  82. "op3freq",    NULL, -1, -1, 10, 30, vistxf3, 0, 878, 0, 0,
  83. "op3detune",    NULL, -1, -1, 10, 36, vism3num, 0, 6, 0, 0,
  84. "op3outlevel",    NULL, -1, -1, 10, 40, visnum, 0, 99, 0, 0,
  85. "op3velocity",    NULL, -1, -1, 10, 44, visnum, 0, 7, 0, 0,
  86. "op3ampmod",    NULL, -1, -1, 10, 47, visonoff, 0, 1, 0, 0,
  87. "op3egbias",    NULL, -1, -1, 10, 52, visnum, 0, 7, 0, 0,
  88. "op3keyrate",    NULL, -1, -1, 10, 56, visnum, 0, 3, 0, 0,
  89. "op3keyscale",    NULL, -1, -1, 10, 60, visnum, 0, 99, 0, 0,
  90. "op3egsft",    NULL, -1, -1, 10, 63, vistxsft, 0, 3, 0, 0,
  91. "op3fix",    NULL, -1, -1, 10, 69, visfix3, 0, 1, 0, 0,
  92. "op4attack",    NULL, -1, -1, 11, 6, visnum, 0, 31, 0, 0,
  93. "op4decay1",    NULL, -1, -1, 11, 10, visnum, 0, 31, 0, 0,
  94. "op4level1",    NULL, -1, -1, 11, 14, visnum, 0, 15, 0, 0,
  95. "op4decay2",    NULL, -1, -1, 11, 18, visnum, 0, 31, 0, 0,
  96. "op4release",    NULL, -1, -1, 11, 22, visnum, 0, 31, 0, 0,
  97. "op4wave",    NULL, -1, -1, 11, 26, vistxwave, 0, 7, 0, 0,
  98. "op4freq",    NULL, -1, -1, 11, 30, vistxf4, 0, 878, 0, 0,
  99. "op4detune",    NULL, -1, -1, 11, 36, vism3num, 0, 6, 0, 0,
  100. "op4outlevel",    NULL, -1, -1, 11, 40, visnum, 0, 99, 0, 0,
  101. "op4velocity",    NULL, -1, -1, 11, 44, visnum, 0, 7, 0, 0,
  102. "op4ampmod",    NULL, -1, -1, 11, 47, visonoff, 0, 1, 0, 0,
  103. "op4egbias",    NULL, -1, -1, 11, 52, visnum, 0, 7, 0, 0,
  104. "op4keyrate",    NULL, -1, -1, 11, 56, visnum, 0, 3, 0, 0,
  105. "op4keyscale",    NULL, -1, -1, 11, 60, visnum, 0, 99, 0, 0,
  106. "op4egsft",    NULL, -1, -1, 11, 63, vistxsft, 0, 3, 0, 0,
  107. "op4fix",    NULL, -1, -1, 11, 69, visfix4, 0, 1, 0, 0,
  108.  
  109. "algorithm",    "Algorithm~l~l~l~l~l~l~l~l~l~d=============",    1, 49, 1, 61, visdx1a, 0, 7, 0, 0,
  110.  
  111. "feedback",    "Feedback",    13, 33, 13, 45, visnum, 0, 7, 0, 0,
  112. "transpose",    "Transpose",    14, 33, 14, 45, visnum, 0, 45, 0, 0,
  113. "lfospeed",    "LFO Speed",    15, 33, 15, 45, visnum, 0, 99, 0, 0,
  114. "lfodelay",    "LFO Delay",    16, 33, 16, 45, visnum, 0, 99, 0, 0,
  115. "lfowave",    "LFO Wave",    17, 33, 17, 45, viswave, 0, 3, 0, 0,
  116. "lfosync",    "LFO Sync",    18, 33, 18, 45, visonoff, 0, 1, 0, 0,
  117. "pitchbend",    "Pitch Bend",    19, 33, 19, 45, visnum, 0, 12, 0, 0,
  118. "portatime",    "Port. Time",    20, 33, 20, 45, visnum, 0, 99, 0, 0,
  119. "portmode",    "Port. Mode",    21, 33, 21, 45, visnum, 0, 1, 0, 0,
  120. "portfoot",    "Port. Foot",    22, 33, 22, 45, visonoff, 0, 1, 0, 0,
  121. "susfoot",    "Sus. Foot",    23, 33, 23, 45, visonoff, 0, 1, 0, 0,
  122. "playmode",    "Mono/Poly",        13, 55, 13, 74, vismono, 0, 1, 0, 0,
  123. "amoddepth",    "Amp Mod Depth",    14, 55, 14, 74, visnum, 0, 99, 0, 0,
  124. "amodsens",    "Amp Mod Sense",    15, 55, 15, 74, visnum, 0, 3, 0, 0,
  125. "pmoddepth",    "Pitch Mod Depth",    16, 55, 16, 74, visnum, 0, 99, 0, 0,
  126. "pmodsens",    "Pitch Mod Sense",    17, 55, 17, 74, visnum, 0, 7, 0, 0,
  127. "modprange",    "Mod Pitch Range",    18, 55, 18, 74, visnum, 0, 99, 0, 0,
  128. "modarange",    "Mod Amp Range",    19, 55, 19, 74, visnum, 0, 99, 0, 0,
  129. "breathprange",    "Breath Pitch",        20, 55, 20, 74, visnum, 0, 99, 0, 0,
  130. "breatharange",    "Breath Amp",        21, 55, 21, 74, visnum, 0, 99, 0, 0,
  131. "breathpbias",    "Breath Pitch Bias",    22, 55, 22, 74, visnum, 0, 99, 0, 0,
  132. "breathegbias",    "Breath EG Bias",    23, 55, 23, 74, visnum, 0, 99, 0, 0,
  133.  
  134. "reverbrate",    "Reverb Rate",        13, 11, 13, 24, visnum, 0, 7, 0, 0,
  135. "fcpitch",    "FC Pitch",        14, 11, 14, 24, visnum, 0, 99, 0, 0,
  136. "fcamp",    "FC Amp",        15, 11, 15, 24, visnum, 0, 99, 0, 0,
  137. NULL,    NULL, -1, -1, -1, -1, visnum, 0, 0, 0, 0
  138. };
  139.  
  140. extern int *txindex;
  141. extern int txleng;
  142.  
  143. char *
  144. vistxwave(v)
  145. {
  146.     static char txbuff[3] = "W ";
  147.     txbuff[1] = v + '1';
  148.     return(txbuff);
  149. }
  150.  
  151. char *visfix1(v) { return(visfx(1,v)); }
  152. char *visfix2(v) { return(visfx(2,v)); }
  153. char *visfix3(v) { return(visfx(3,v)); }
  154. char *visfix4(v) { return(visfx(4,v)); }
  155.  
  156. char *visfx(n,v)
  157. {
  158.     static int lastfx[] = { 0, -1, -1, -1, -1 };
  159.     char buff2[8];
  160.     int fqindex;
  161.  
  162.     if ( lastfx[n] != -1 && lastfx[n] == v )
  163.         goto nochange;
  164.  
  165.     lastfx[n] = v;
  166.     sprintf(buff2,"op%dfreq",n);
  167.     fqindex = parmindex(buff2);
  168.     if ( v == 0 )
  169.         P[fqindex].p_max = txleng-1;
  170.     else
  171.         P[fqindex].p_max = 247;
  172.     if ( P[fqindex].p_val > P[fqindex].p_max )
  173.         P[fqindex].p_val = P[fqindex].p_max;
  174.     showparam(fqindex,0);
  175. nochange:
  176.     if ( v == 0 )
  177.         return("ratio");
  178.     else
  179.         return("fixed");
  180. }
  181.  
  182. char *
  183. vistxsft(v)
  184. {
  185.     switch(v){
  186.     case 0: return("off");
  187.     case 1: return("48");
  188.     case 2: return("24");
  189.     case 3: return("12");
  190.     }
  191.     return("??");
  192. }
  193.  
  194. extern int txfreq[];
  195.  
  196. char *
  197. vistxq(v)
  198. {
  199.     static char fbuff[8];
  200.     int f, n1, n2;
  201.  
  202.     txinit();
  203.     f = txfreq[txindex[v]];
  204.     n1 = f/100;
  205.     n2 = f%100;
  206.     sprintf(fbuff,n2<10?"%d.0%d":"%d.%d",n1,n2);
  207.     return(fbuff);
  208. }
  209.  
  210. char *
  211. visfq(v)
  212. {
  213.     static char fixbuff[8];
  214.  
  215.     sprintf(fixbuff,"%-5d",v+8);
  216.     return(fixbuff);
  217. }
  218.  
  219. char *
  220. visnfix(n,v)
  221. {
  222.     char buff[8];
  223.     int fx;
  224.  
  225.     sprintf(buff,"op%dfix",n);
  226.     fx = getval(buff);
  227.     if ( fx == 0 )
  228.         return(vistxq(v));
  229.     else
  230.         return(visfq(v));
  231. }
  232.  
  233. char *vistxf1(v) { return(visnfix(1,v)); }
  234. char *vistxf2(v) { return(visnfix(2,v)); }
  235. char *vistxf3(v) { return(visnfix(3,v)); }
  236. char *vistxf4(v) { return(visnfix(4,v)); }
  237.